package br.com.localab.reservaambiente.controlador;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.hibernate.Session;

import br.com.localab.ambiente.modelo.Ambiente;
import br.com.localab.ambiente.modelo.Ambiente_PK;
import br.com.localab.bloco.modelo.Bloco;
import br.com.localab.fachada.Fachada;
import br.com.localab.reservaambiente.modelo.ReservaAmbiente;
import br.com.localab.reservaambiente.modelo.ReservaAmbiente_PK;
import br.com.localab.tipoAmbiente.modelo.TipoAmbiente;
import br.com.localab.usuario.modelo.Usuario;
import br.com.localab.util.autenticar.FacesContextUtil;


@ManagedBean
@ViewScoped
public class CadastroReservaAmbienteMB implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private Fachada fachada;
	private Usuario usuario;
	private String codigoAmbiente;
	private String codigoBloco;
	private Ambiente ambiente;
	private String codigoTipoAmbiente;
	private Date dataReservaAmbiente;
	private List<TipoAmbiente> listaDeTiposDeAmbientes;
	private List<Bloco> listaDeBlocos;
	private List<Ambiente> listaAmbientes;
	private ReservaAmbiente_PK reservaAmbiente_PK;
	private Session s;

	public CadastroReservaAmbienteMB() {
		// TODO Auto-generated constructor stub
		s = FacesContextUtil.getRequestSession();
		fachada = new Fachada(s);
		listaDeBlocos = fachada.blocoListar("ativo", true);
		this.usuario = (Usuario) FacesContextUtil.getSessionAttribute("usuario");
	}

	public void cadastrar(){
		s = FacesContextUtil.getRequestSession();
		fachada = new Fachada(s);
		ReservaAmbiente reservaAmbiente = new ReservaAmbiente();
		String mensagem;
		Ambiente_PK ambiente_PK = new Ambiente_PK();
		ambiente_PK.setBloco(fachada.blocoProcurar(Long.parseLong(codigoBloco)));
		ambiente_PK.setNome(codigoAmbiente);
		ambiente_PK.setTipoAmbiente(fachada.tipoAmbienteProcurar(Long.parseLong(codigoTipoAmbiente)));
		ambiente = fachada.ambienteProcurar(ambiente_PK);
		System.out.println(ambiente.getAmbiente_PK().getNome());
		reservaAmbiente_PK = new ReservaAmbiente_PK();
		reservaAmbiente.setAtivo(true);
		reservaAmbiente_PK.setAmbiente(ambiente);
		reservaAmbiente_PK.setUsuario(usuario);
		reservaAmbiente_PK.setData_da_reserva(dataReservaAmbiente);
		reservaAmbiente.setReservaAmbiente_PK(reservaAmbiente_PK);
		mensagem = fachada.reservaAmbienteCadastrar(reservaAmbiente);
		FacesContextUtil.setMessageInformacao("info", mensagem);
		limpar();
	}
	
	public void carregarTipoDeAmbiente(){
		if(codigoBloco != null || !codigoBloco.equals("")){
		s = FacesContextUtil.getRequestSession();
		fachada = new Fachada(s);
		listaDeTiposDeAmbientes = fachada.tipoAmbienteListar("ativo", true,"bloco.codigo", Long.parseLong(codigoBloco));
		}
	}
	
	public void carregarAmbientes(){
		System.out.println("CAI AQUI!");
		s = FacesContextUtil.getRequestSession();
		fachada = new Fachada(s);
		listaAmbientes = fachada.ambienteListar("ativo", true, "ambiente_PK.bloco.codigo",Long.parseLong(codigoBloco),"ambiente_PK.tipoAmbiente.codigo",Long.parseLong(codigoTipoAmbiente));
	}
	
	public void passarAmbiente(Ambiente ambiente){
		this.ambiente = ambiente;
	}
		
	public void limpar(){
		codigoBloco = "";
		codigoTipoAmbiente ="";
		codigoAmbiente = "";
		dataReservaAmbiente = null;
	}

	public Date getDataReservaAmbiente() {
		return dataReservaAmbiente;
	}

	public void setDataReservaAmbiente(Date dataReservaAmbiente) {
		this.dataReservaAmbiente = dataReservaAmbiente;
	}

	public String getCodigoAmbiente() {
		return codigoAmbiente;
	}

	public void setCodigoAmbiente(String codigoAmbiente) {
		this.codigoAmbiente = codigoAmbiente;
	}

	public List<TipoAmbiente> getListaDeTiposDeAmbientes() {
		return listaDeTiposDeAmbientes;
	}

	public void setListaDeTiposDeAmbientes(
			List<TipoAmbiente> listaDeTiposDeAmbientes) {
		this.listaDeTiposDeAmbientes = listaDeTiposDeAmbientes;
	}

	public List<Ambiente> getListaAmbientes() {
		return listaAmbientes;
	}

	public void setListaAmbientes(List<Ambiente> listaAmbientes) {
		this.listaAmbientes = listaAmbientes;
	}

	public List<Bloco> getListaDeBlocos() {
		return listaDeBlocos;
	}

	public void setListaDeBlocos(List<Bloco> listaDeBlocos) {
		this.listaDeBlocos = listaDeBlocos;
	}

	public String getCodigoBloco() {
		return codigoBloco;
	}

	public void setCodigoBloco(String codigoBloco) {
		this.codigoBloco = codigoBloco;
	}

	public String getCodigoTipoAmbiente() {
		return codigoTipoAmbiente;
	}

	public void setCodigoTipoAmbiente(String codigoTipoAmbiente) {
		this.codigoTipoAmbiente = codigoTipoAmbiente;
	}

	public Ambiente getAmbiente() {
		return ambiente;
	}

	public void setAmbiente(Ambiente ambiente) {
		this.ambiente = ambiente;
	}

	
    	
	
	
}
